#pragma once
#include<ctime>
#include "level.hpp"
#include<string>
#include<thread>
#include"util.hpp"
/* 
    日志消息类, 用于进行日志中间信息的存储：
    1、 日志的输出时间         可用于过滤日志
    2、 日志的等级            用于进行日志的过滤分析
    3、 源文件名称  
    4、 源代码行号            用于定位出现错误的代码位置
    5、 线程ID               用于过滤出错的线程
    6、 日志主题消息
    7、 日志器名称            项目允许多日志器同时使用
*/ 


namespace CH
{
	class LogMsg
	{
	public:
		time_t _ctime;                   //日志产生的时间戳
		LogLevel::value _level;          //日志等级
		const std::string _filename;     //文件名
		size_t _line;                    //文件行号
		std::thread::id _tid;            //线程id
		const std::string _payload;      //日志消息
		const std::string _logname;      //日志器名称
		
		LogMsg(const std::string filename,const std::string& logname,size_t line,LogLevel::value level,const std::string& payload)
			:_filename(filename),_logname(logname),_payload(payload),_level(level),_line(line),
			_ctime(Util::date::now()),_tid(std::this_thread::get_id())
		{}
		
	};
}
